/*
 * cpu_info.h
 *
 * Representación de información sobre una CPU
 *
 */

#ifndef CPU_INFO_H
#define CPU_INFO_H

#include "bstring/bstrlib.h"

/*
 * Tipo info de CPU
 * El struct es público y no opaco _intencionalmente_. La abstracción es de
 * tupla sin otras operaciones, con lo cual se permite acceso (de lectura)
 * a los campos.
 */
typedef struct {
	bstring type;
	bstring model;
} CpuInfo;

CpuInfo cpu_info_new (const char *proc_dir);
/*
 * Arma un nuevo `CpuInfo', leyendo datos del sistema sobre el 1er CPU.
 *   `proc_dir' debe indicar la ruta al montaje de procfs (usualmente "/proc")
 *   Requires: proc_dir != NULL
 *   Returns: nueva cpu_info
 */

CpuInfo cpu_info_destroy (CpuInfo self);
/*
 * Destruye `self'. Usar como "x = cpu_info_destroy (x)" para evitar que
 *   queden punteros dangling.
 *   self: CpuInfo a destruir
 */

#endif /* CPU_INFO_H */
